import plugin from "../../../lib/plugins/plugin.js";
import common from "../../../lib/common/common.js";
import schedule from "node-schedule";

/** 点赞次数，非会员10次，会员20次 */
const thumbsUpMe_sum = 10;

/** 被消息触发 */
export class ScheduledLike extends plugin {
  constructor() {
    super({
      name: "定时点赞",
      dsc: "定时给好友点赞",
      event: "message",
      priority: 5000,
      rule: [
        {
          reg: "^#?主动点赞$", // 新增的主动触发指令
          fnc: "manualThumbsUp",
        },
      ],
    });
    this.setupScheduledLikes(); // 创建定时任务
  }

  /** 设定定时点赞任务 */

/*
  setupScheduledLikes() {
    schedule.scheduleJob("0 * * * *", async () => {
      await this.autoThumbsUp();
    });
  }
*/

  /** 自动点赞 */
/*
  async autoThumbsUp() {
    const thumbsUpMelist = await this.getFriendList(); // 获取好友列表
    const totalFriends = Object.keys(thumbsUpMelist).length; // 计算好友总数
    const estimatedTime = this.calculateEstimatedTime(totalFriends * 2.5); // 计算预计时间

    logger.info(`共 ${totalFriends} 个好友，预计需要时间：${estimatedTime}`);

    for (let qq of Object.keys(thumbsUpMelist)) {
      const friend = await Bot.pickFriend(qq); // 获取好友对象
      await friend.thumbUp(thumbsUpMe_sum);
      logger.info(`已点赞：好友QQ号：${friend.user_id}`);
      await this.randomDelay(); // 使用随机延迟
    }
  }
*/

  /** 主动点赞方法 */
  async manualThumbsUp() {
    const thumbsUpMelist = await this.getFriendList(); // 获取好友列表
    const totalFriends = Object.keys(thumbsUpMelist).length; // 计算好友总数
    const estimatedTime = this.calculateEstimatedTime(totalFriends * 20); // 计算预计时间

    await this.e.reply(`共 ${totalFriends} 个好友，预计需要时间：${estimatedTime}`);

    for (let qq of Object.keys(thumbsUpMelist)) {
      const friend = await Bot.pickFriend(qq); // 获取好友对象
      await friend.thumbUp(thumbsUpMe_sum);
      logger.info(`已点赞：好友QQ号：${friend.user_id}`);
      await this.randomDelay(); // 使用随机延迟
    }
    this.e.reply("已主动给好友点赞！"); // 回复用户
    return true;
  }

  /** 获取好友列表 */
  async getFriendList() {
    try {
      const friendList = await this.e.bot.getFriendList(); // 获取好友列表
      console.log("获取到的好友列表:", friendList); // 打印好友列表以调试

      // 创建好友列表对象
      let thumbsUpMelist = {};

      for (const [user_id, friend] of friendList) {
        thumbsUpMelist[friend.user_id] = {
          push: true, // 默认开启点赞消息推送
        };
      }

      return thumbsUpMelist; // 返回格式为对象
    } catch (error) {
      console.error("获取好友列表时出错：", error);
      throw new Error("获取好友列表失败"); // 抛出错误
    }
  }

  /** 计算预计时间 */
  calculateEstimatedTime(totalFriends) {
    const totalSeconds = totalFriends; // 每个点赞1秒
    const hours = Math.floor(totalSeconds / 3600);
    const minutes = Math.floor((totalSeconds % 3600) / 60);
    const seconds = totalSeconds % 60;

    return `${hours}小时 ${minutes}分钟 ${seconds}秒`;
  }

/** 随机延迟函数（10-30秒之间） */
async randomDelay() {
  const delay = Math.floor(Math.random() * 20000) + 10000; // 随机延迟10到30秒
  return new Promise((resolve) => setTimeout(resolve, delay));
}

}

/** 休眠函数
 * @time 毫秒
 */
function sleep(time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

// 创建并设置定时点赞任务
const scheduledLike = new ScheduledLike();
